package com.noahplat.datapro.controller;

import com.noahplat.common.utils.Result;
import com.noahplat.datapro.service.DataProService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import java.util.List;

/**
 * @ClassName: DataProController
 * @Description: 可穿戴设备数据提供接口
 * @Author 李景星
 * @Date 2021/3/4
 * @Version 1.0
 */
@RestController
@RequestMapping("/api/datapro")
@Validated
public class DataProController {

    @Autowired
    private DataProService dataProService;

    /**
     * 批量查询实时数据,单个查询时只传单个数据
     * @param imeis 设备唯一标识数组
     * @param types 查询数据类型标识数组
     * @return
     */
    @PreAuthorize("hasAuthority('noahplat-service-datapro:DataProController:getReal')")
    @GetMapping("/getReal")
    public Result getReal(@NotEmpty(message = "设备号不能为空") @RequestParam("imeis") String[] imeis,
                                          @NotEmpty(message = "查询类型不能为空") @RequestParam("types") String[] types){
        return dataProService.getReal(imeis, types);
    }

    /**
     * 按时间获取历史数据
     * @param imei 设备号
     * @param type 查询类型
     * @param date 指定日期 格式 yyyy-MM-dd
     * @return
     */
    @PreAuthorize("hasAuthority('noahplat-service-datapro:DataProController:getHis')")
    @GetMapping("/getHis")
    public Result getHis(@NotEmpty(message = "设备号不能为空") @RequestParam("imei") String imei,
                                     @NotEmpty(message = "查询类型不能为空") @RequestParam("type") String type,
                                     @NotEmpty(message = "查询日期不能为空") @Pattern (regexp = "[0-9]{4}-[0-9]{2}-[0-9]{2}", message = "上传日期格式不合法")@RequestParam("date") String date){
        return dataProService.getHis(imei, type, date);
    }

    /**
     * 工地项目查询位置数据
     */
    @PreAuthorize("hasAuthority('noahplat-service-datapro:DataProController:selectSite')")
    @GetMapping("/selectSite")
    public Result selectSite( @RequestParam("imeis") List<String> imeis){
        return dataProService.selectSite(imeis);
    }
}
